package com.SparkCore.ACC

import org.apache.spark.{SparkConf, SparkContext}


/**
 * 累加器 核心编程
 * 系统累加器
 */
object Spark02_ACC {
  def main(args: Array[String]): Unit = {
    val sparkConf = new SparkConf().setMaster("local").setAppName("wordcount")
    val sc = new SparkContext(sparkConf)

    val rdd = sc.makeRDD(List(1, 2, 3, 4, 5, 6))

   //创建系统的累加器
    //Spark默认就提供了简单数据聚合的累加器
    val sumACC = sc.longAccumulator("sum")

    //浮点型累加器
    val sumAccumulator = sc.doubleAccumulator("sum")
    //集合类型累加器
    //sc.collectionAccumulator()
    //使用累加器
    rdd.foreach(
      num => {
        sumACC.add(num)
      }
    )
    //获取累加器
    println(sumACC.value)
    sc.stop()
  }
}
